package com.atguigu.gulimall.product.entity;

import com.atguigu.common.valid.AddGroup;
import com.atguigu.common.valid.ListVal;
import com.atguigu.common.valid.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*;

/**
 * 品牌
 *
 * @author humingyang
 * @email humingyang@163.com
 * @date 2021-06-02 22:23:20
 */
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 品牌id
	 */
	@TableId
	@NotNull(message = "修改必须制定对应的id",groups = {UpdateGroup.class})
	@Null(message = "新增不能指定ID",groups = {AddGroup.class})
	private Long brandId;
	/**
	 * 品牌名
	 */
	@NotBlank(message = "品牌名不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String name;
	/**
	 * 品牌logo地址
	 * 	1：注意使用了分组检验之后，如果某一个字段不使用分组注解的话，
	 * 	2：是不会触发校验的，某一个注解添加什么分组，某一个注解就会触发什么样的校验
	 * 	3：如果只是在controller中添加了一个@Validated注解，却不标明使用什么分组校验的话，
	 * 		那么说明，不使用分组校验，那么没有添加分组的校验会生效，添加分组分组校验的不会生效
	 *  4：JSR303可以使用正则表达式校验
	 *	5：自定义注解
	 *
	 */

	@NotEmpty(message = "新增不能为空",groups = {AddGroup.class})
	@URL(message = "必须是一个合法的URL地址",groups = {AddGroup.class,UpdateGroup.class})
	private String logo;
	/**
	 * 介绍
	 */
	private String descript;
	/**
	 * 显示状态[0-不显示；1-显示]
	 */

	@ListVal(values={0,1},groups = {AddGroup.class},message = "必须是指定的值0或者1")
	private Integer showStatus;
	/**
	 * 检索首字母
	 *
	 */

	@Pattern(regexp = "[a-zA-Z]$",message = "检索首字母必须是一个字母",groups = {AddGroup.class,UpdateGroup.class})
	private String firstLetter;
	/**
	 * 排序
	 */
	private Integer sort;

}
